using EPiServer.Core;
using EPiServer.DataAbstraction;
using EPiServer.SpecializedProperties;
using PageTypeBuilder;
using TemplateFoundation.Tabs;

namespace TemplateFoundation.PageTypes
{
    /// <summary>
    /// Defines members used by ETF for site settings such as page types and container pages being used
    /// </summary>
    public interface ISiteSettingsPage
    {
        /// <summary>
        /// Gets or sets the company name
        /// </summary>
        string CompanyName { get; set; }

        /// <summary>
        /// Gets or sets the company phone number
        /// </summary>
        string CompanyPhoneNumber { get; set; }

        /// <summary>
        /// Gets or sets the company fax number
        /// </summary>
        string CompanyFaxNumber { get; set; }

        /// <summary>
        /// Gets or sets the company street address
        /// </summary>
        string CompanyStreetAddress { get; set; }

        /// <summary>
        /// Gets or sets the company postal address, such as a PO box
        /// </summary>
        string CompanyPostalAddress { get; set; }

        /// <summary>
        /// Gets or sets the company zip code
        /// </summary>
        string CompanyZipCode { get; set; }

        /// <summary>
        /// Gets or sets the company city
        /// </summary>
        string CompanyCity { get; set; }

        /// <summary>
        /// Gets or sets the company e-mail address
        /// </summary>
        string CompanyEmail { get; set; }

        /// <summary>
        /// Gets or sets the container page for articles
        /// </summary>
        PageReference NewsContainer { get; set; }

        /// <summary>
        /// Gets or sets the container page for contacts
        /// </summary>
        PageReference ContactsContainer { get; set; }

        /// <summary>
        /// Gets or sets the container page for tag pages
        /// </summary>
        PageReference TagsContainer { get; set; }

        /// <summary>
        /// Gets or sets the page type used for date folders
        /// </summary>
        int? DateFolderPageTypeId { get; set; }

        /// <summary>
        /// Gets or sets the page type used to create tag pages
        /// </summary>
        int? TagPageTypeId { get; set; }

        /// <summary>
        /// Gets or sets the page type used for articles and blog posts
        /// </summary>
        int? ArticlePageTypeId { get; set; }

        /// <summary>
        /// Gets or sets the page type used for standard pages
        /// </summary>
        int? StandardPageTypeId { get; set; }

        /// <summary>
        /// Gets or sets the page type used for person-type contact pages
        /// </summary>
        int? PersonPageTypeId { get; set; }

        /// <summary>
        /// The language used when publishing pages through MetaWeblog
        /// </summary>
        string MetaWeblogPublishLanguage { get; set; }

        /// <summary>
        /// Gets or sets if automatic date folder sorting under the news container should be disabled
        /// </summary>
        bool DisableDateFolderSorting { get; set; }

        /// <summary>
        /// Gets or sets folder where static files are stored
        /// </summary>
        string StaticFilesPath { get; set; }

        /// <summary>
        /// Gets or sets if stylesheet rendering should be disabled
        /// </summary>
        bool DisableStylesheetLinks { get; set; }

        /// <summary>
        /// Gets or sets if JavaScript links rendering should be disabled
        /// </summary>
        bool DisableJavaScriptLinks { get; set; }
    }
}